package org.saxion.aktiehuis.view;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import org.saxion.aktiehuis.model.BesteldProduct;
import org.saxion.aktiehuis.model.Bestelling;



class BestellingenTabelModel extends AbstractTableModel{
   
	
	private int tempBestelling;
	private int rowSize ;
	private double totaal ;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<Bestelling> Bestellingen;
	private String headerList[] = new String[] {"BestellingId",
			"Product",
            "Soort",
            "Prijs",
            "Aantal", 
            "totaal"};
    
    public BestellingenTabelModel(List<Bestelling> Bestellingen){
    	this.Bestellingen = Bestellingen;
    	totaal = 0;
    	rowSize = 0;

		for(Bestelling bestelling : Bestellingen)
		{
				rowSize += bestelling.getProducten().size();
				
				for(BesteldProduct BesteldProduct : bestelling.getProducten()){
					totaal += BesteldProduct.getAantal() * BesteldProduct.getProduct().getPrijs();
				}
		}
    }

	public Object getValueAt(int rowIndex, int columnIndex) {
		
		if(rowIndex != rowSize){
		BesteldProduct besteldProduct = getProduct(rowIndex);
			switch (columnIndex) {
				case 0:
					return tempBestelling; 
	            case 1:
	                return besteldProduct.getProduct().getNaam();  
	            case 2:
	                return besteldProduct.getProduct().getProductSoort().getNaam();
	            case 3:
	                return besteldProduct.getProduct().getPrijs();  
	            case 4:
	            	return besteldProduct.getAantal(); 
	            case 5:	
	            	return besteldProduct.getAantal() * besteldProduct.getProduct().getPrijs();
	        }
		}
		else
			switch (columnIndex) {
            case 5:	
            	return totaal;
            default:
            	return "";
        }	
		
		return null; //temp?
	}
	
	private BesteldProduct getProduct(int rowIndex)
	{
		ArrayList<BesteldProduct> list = null;
		
		for(Bestelling bestelling : Bestellingen)
		{
			if( rowIndex <= ( bestelling.getProducten().size()-1))
			{
				list = new ArrayList(bestelling.getProducten());
				tempBestelling = bestelling.getId();
				return list.get(rowIndex);
			}
			else
			{
				rowIndex -= bestelling.getProducten().size();
			}
		}
		
		return null;
	}
	
	public boolean isCellEditable( int row, int col ) {
		return false;
		
	}


    //display the name of columns
    public String getColumnName(int col) {
    	return headerList[col];     
    }


	public int getColumnCount() {
		return 6;
	}
	
	public int getRowCount() {		
		return rowSize + 1;
	}
	

}